package com.gt.ln
/**
 * Option 类型详解
 * Scala 中提供的null值尽量避免使用，除非要与java交互
 * 在java中null是一个关键字，而不是一个对象，所以对他调用任何方法都是非法的，这与函数式编程的scala不符合。
 * Scala 试图摆脱null来解决这个问题，并提供了一个自己的类型，用来表示一个值是可选的，这就是Option[A]特质。
 * 1. Option、Some、None
 *    Option[A] 是一个类型为A 的 可选值的容器
 *    若 值 存在，则Option[A] 就是一个 Some[A]
 *    若 值 不存在，Option[A] 就是对象 None
 *
 */
object LnOption extends App {

  //直接实例化  得到Option
  private val dog  :Option[String] = Option("dog")
  //实例化Some 得到Option
  private val dog2 :Option[String] = Some("dog2")

  //值缺失的情况下，使用Option实例化
  private val dog3 :Option[String] = Option(null)
  //值缺失的情况下，使用None实例化
  private val dog4 :Option[String] = None

}
